package cn.fl.ref.fncprjfstpyinfo.transform;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.ref.fncprjfstpyinfo.vo.FncPrjDetailVO;
import fl.ref.fncprjfstpyinfo.dto.FncPrjDetailDTO;

/**
 * @Description: 融资项目首付款信息
 */
public class FncPrjDetailVOTransform {
	
	/**
	 * 分转元
	 * @param number
	 * @return
	 */
	public static BigDecimal fenToYuan(BigDecimal number){
		if(number!=null&&number!=new BigDecimal(0)){
			return number.divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
		}
		return null;
	}
	
	/**
	 * 元转分
	 * @param number
	 * @return
	 */
	public static BigDecimal yuanToFen(BigDecimal number){
		if(number!=null&&number!=new BigDecimal(0)){
			return number.multiply(new BigDecimal(100));
		}
		return null;
	} 

	/**
	 * VO 转 DTO
	 * 
	 * @param dto
	 * @return
	 */
	public static FncPrjDetailDTO toDTO(FncPrjDetailVO vo) {
		FncPrjDetailDTO dto = null;
		if (vo != null) {
			dto = new FncPrjDetailDTO();
			dto.setId(vo.getId());// 逻辑序号
			dto.setFncPrjId(vo.getFncPrjId());// 融资项目编号
			dto.setFncPrjIdStr(vo.getFncPrjIdStr());// 融资项目编号
			dto.setFncPrjNm(vo.getFncPrjNm());// 项目名称
			dto.setFncPrjStcd(vo.getFncPrjStcd()); // 项目状态代码
			dto.setFncPrjAmt(yuanToFen(vo.getFncPrjAmt()));// 项目金额
			dto.setFncFiAmt(yuanToFen(vo.getFncFiAmt()));// 融资金额
			dto.setCrtTm(vo.getCrtTm());// 创建日期
			dto.setExpInt(vo.getExpInt());// 首付款预付利息
			dto.setFstpyAmt(yuanToFen(vo.getFstpyAmt()));// 首付款最终付款金额
			dto.setFstpyAccno(vo.getFstpyAccno());// 首付款账号
			dto.setUpdPsnEcdd(vo.getUpdPsnEcdd());// 修改人编号
			dto.setUpdTm(vo.getUpdTm());// 修改时间
			dto.setAcFiAmt(yuanToFen(vo.getAcFiAmt()));
			dto.setFstpyPayAccno(vo.getFstpyPayAccno());
			dto.setFstpyTm(vo.getFstpyTm());
			dto.setFstpySt(vo.getFstpySt());// 首付款操作状态
			
			dto.setFncInsId(vo.getFncInsId());
			dto.setFundRasInsNm(vo.getFundRasInsNm());// 融资机构名称
			dto.setFncScmNm(vo.getFncScmNm());// 融资方案名称
			dto.setFncScmId(vo.getFncScmId());// 融资方案ID
			dto.setRlNm(vo.getRlNm()); // 融资经理（ 用户名称）
			dto.setFncCrdnlt(vo.getFncCrdnlt()); // 融资基数
			dto.setDcnRate(vo.getDcnRate());// 打折率
			dto.setStdt(vo.getStdt());// 融资方案开始时间
			dto.setEddt(vo.getEddt());// 融资方案结束时间
			dto.setMrgnPct(vo.getMrgnPct());// 保证金比例
			dto.setMrgnClCrdnlt(vo.getMrgnClCrdnlt());// 保证金计费基数 1.融资金额 2.项目金额 3.支付表本金 4.支付表利息
			dto.setMrgnWthrInPay(vo.getMrgnWthrInPay());// 保证金是否计入首付款
			dto.setWthrFstPay(vo.getWthrFstPay());// 首付款是否坐扣
			dto.setWthrDdctFstPay(vo.getWthrDdctFstPay());// 首付款是否坐扣
			
			dto.setCrNm(vo.getCrNm());// 授信名称
			dto.setPdNm(vo.getPdNm());// 产品名称
			dto.setCrCtrNo(vo.getCrCtrNo());// 授信合同号
			dto.setCrBal(yuanToFen(vo.getCrBal()));// 授信余额
			dto.setLgCId(vo.getLgCId());// 授信Id
			dto.setPayCnt(vo.getPayCnt());
			
			dto.setFncPrjFstpyInfoDTOs(FncPrjFstpyInfoVOTransform.toDTOList(vo.getFncPrjFstpyInfoVOs()));
		}
		return dto;
	}

	/**
	 * DTO 转 PO
	 * 
	 * @param dto
	 * @return
	 */
	public static FncPrjDetailVO toVO(FncPrjDetailDTO dto) {
		FncPrjDetailVO vo = null;
		if (dto != null) {
			vo = new FncPrjDetailVO();
			vo.setId(dto.getId());// 逻辑序号
			vo.setFncPrjId(dto.getFncPrjId());// 融资项目编号
			vo.setFncPrjIdStr(dto.getFncPrjIdStr());// 融资项目编号
			vo.setFncPrjNm(dto.getFncPrjNm());// 项目名称
			vo.setFncPrjStcd(dto.getFncPrjStcd()); // 项目状态代码
			vo.setFncPrjAmt(fenToYuan(dto.getFncPrjAmt()));// 项目金额
			vo.setFncFiAmt(fenToYuan(dto.getFncFiAmt()));// 融资金额
			vo.setCrtTm(dto.getCrtTm());// 创建日期
			vo.setExpInt(dto.getExpInt());// 首付款预付利息
			vo.setFstpyAmt(fenToYuan(dto.getFstpyAmt()));// 首付款最终付款金额
			vo.setFstpyAccno(dto.getFstpyAccno());// 首付款账号
			vo.setUpdPsnEcdd(dto.getUpdPsnEcdd());// 修改人编号
			vo.setUpdTm(dto.getUpdTm());// 修改时间
			vo.setAcFiAmt(fenToYuan(dto.getAcFiAmt()));
			vo.setFstpyPayAccno(dto.getFstpyPayAccno());
			vo.setFstpyTm(dto.getFstpyTm());
			vo.setFstpySt(dto.getFstpySt());// 首付款操作状态
			
			vo.setFncInsId(dto.getFncInsId());
			vo.setFundRasInsNm(dto.getFundRasInsNm());// 融资机构名称
			vo.setFncScmNm(dto.getFncScmNm());// 融资方案名称
			vo.setFncScmId(dto.getFncScmId());// 融资方案ID
			vo.setRlNm(dto.getRlNm()); // 融资经理（ 用户名称）
			vo.setFncCrdnlt(dto.getFncCrdnlt()); // 融资基数
			vo.setDcnRate(dto.getDcnRate());// 打折率
			vo.setStdt(dto.getStdt());// 融资方案开始时间
			vo.setEddt(dto.getEddt());// 融资方案结束时间
			vo.setMrgnPct(dto.getMrgnPct());// 保证金比例
			vo.setMrgnClCrdnlt(dto.getMrgnClCrdnlt());// 保证金计费基数 1.融资金额 2.项目金额 3.支付表本金 4.支付表利息
			vo.setMrgnWthrInPay(dto.getMrgnWthrInPay());// 保证金是否计入首付款
			vo.setWthrFstPay(dto.getWthrFstPay());// 首付款是否坐扣
			vo.setWthrDdctFstPay(dto.getWthrDdctFstPay());// 首付款是否坐扣
			
			vo.setCrNm(dto.getCrNm());// 授信名称
			vo.setPdNm(dto.getPdNm());// 产品名称
			vo.setCrCtrNo(dto.getCrCtrNo());// 授信合同号
			vo.setCrBal(fenToYuan(dto.getCrBal()));// 授信余额
			vo.setLgCId(dto.getLgCId());//授信Id
			vo.setPayCnt(dto.getPayCnt());
		}
		return vo;
	}

	/**
	 * PO集合 转 DTO集合
	 * 
	 * @param list
	 * @return
	 */
	public static List<FncPrjDetailDTO> toDTOList(List<FncPrjDetailVO> list) {
		List<FncPrjDetailDTO> voList = new ArrayList<FncPrjDetailDTO>();
		if (CollectionUtils.isNotEmpty(list)) {
			for (FncPrjDetailVO vo : list) {
				voList.add(toDTO(vo));
			}
		}
		return voList;
	}

	/**
	 * DTO集合 转 PO集合
	 * 
	 * @param list
	 * @return
	 */
	public static List<FncPrjDetailVO> toVOList(List<FncPrjDetailDTO> list) {
		List<FncPrjDetailVO> voList = new ArrayList<FncPrjDetailVO>();
		if (CollectionUtils.isNotEmpty(list)) {
			for (FncPrjDetailDTO dto : list) {
				voList.add(toVO(dto));
			}
		}
		return voList;
	}

}
